#include <iostream>
#include <string>
#include <unistd.h>
#include <pthread.h>
using namespace std;
int num=0;//num在同一个进程的不同线程之间是共享的，因为地址空间是共享的
void* routine(void* args)
{
    string name=(char*)args;
    pthread_t tid=pthread_self();
    for(int i=0;i<10;i++)
    {
        cout<<"我是新线程，我的名字："<<name<<"我的ID:"<<tid<<"    ";
        num++;
        cout<<"num:"<<num<<endl;
        sleep(1);
    }
    return (void*)123;
}

int main()
{
    pthread_t tid;
    pthread_t selfid=pthread_self();
    int n=pthread_create(&tid,nullptr,routine,(void*)"thread-1");
    (void)n;

    for(int i=0;i<10;i++){
        cout<<"我是主线程的id:"<<selfid<<"    "<<"num:"<<num<<endl<<"新线程的id:"<<tid<<endl;
        sleep(1);
    }
    void** ret;
    pthread_join(tid,ret);//线程创建好后，新线程要被主线程等待，否则就会有类似于僵尸进程的问题，内存泄漏。
    cout<<(unsigned long long)(*ret)<<endl;
    return 0;
}
/*
void* threadrun(void* args)
{
    string name=(const char*)args;
    while(1)
    {
        cout<<"我是新线程name:"<<name<<endl;
        sleep(1);
    }
    return nullptr;
}

int main()
{
    pthread_t tid;
    pthread_create(&tid,nullptr,threadrun,(void*)"thread-1");

    while(1)
    {
        cout<<"我是主线程"<<endl;
        sleep(1);
    }
    return 0;
}
*/